Interrupt driven multi-buffer DMA circuit for enabling continuous sequential data transfers

ABSTRACT

An apparatus for controlling sequential (DMA) transfers between a plurality of buffer memories and a data translation device. Each buffer has an overrun has an overrun area associated with it. Prior to transfers from the buffers to the data translation device, the buffer memories are first &#34;threaded&#34; together by loading the overrun area of a first buffer with data from the next buffer. During the DMA transfer, when the first buffer becomes empty a request is made to the computer to restart the DMA operation on the next sequential buffer, but while the interrupt is being serviced data is continually being transferred out of the first buffer&#39;s overrun area. Alternatively, for transfers from the data translation device to the buffers, after the first buffer is full, an interrupt is generated and incoming data is stored in the first buffer&#39;s overrun area while the interrupt is being serviced. After the interrupt is serviced data is stored in the next sequential buffer. Subsequently, the computer determines the exact point where the DMA process stopped depositing data in the overrun area by sequentially examining the entries in the overrun area. The computer then moves the data in the overrun area into the next buffer to complete the transfer.

This application is a continuation of application Ser. No. 470,402, filed Feb. 28, 1983, now U.S. Pat. No. 4,599,689, issued July 8, 1986.

FIELD OF THE INVENTION

The present invention relates to computer systems in general and more particularly to data acquisition and signal generation systems for use with computer systems.

BACKGROUND OF THE INVENTION

Computerized control apparatus for controlling many manufacturing processes and techniques is now in widespread use. Typically, a control computer system interfaces with a manufacturing process by means of data acquisition and signal generation devices. Data acquisition devices sample selected variables in the manufacturing process at predetermined intervals and convert the measured variables into digital codes suitable for use by the computer. Alternatively signal generation devices are used to translate the digital codes produced by the computer into analog signals suitable for controlling the manufacturing process.

In some systems, the measured variables are transferrred to the computer system's main memory. The processor then performs computations on the data in main memory and provides output signals which can be used to control the ongoing process. In other systems, incoming data from the sampling circuits is transferred from main memory to a secondary storage unit and later retrieved for analysis. This latter method is typically used when data rates exceed the real-time processing capabilities of the system.

In the latter type of data acquisition system, data is sampled at a steady rate and each sample is temporarily stored in the data acquisition device before being transferred to a plurality of temporary storage or buffer areas located in the computer's main memory. Generally, in order to reduce the processing requirements on the main computer the transfer of data from the data acquisition device to the storage area is performed by a direct memory access (DMA) unit. This well-known unit contains the logic circuitry to generate the necessary address information and commands to transfer information from the data acquisition device to the storage area without direct intervention by the computer system. In order to initiate a DMA transfer, the computer sends the DMA unit the starting address of a buffer memory at which to begin storing the transferred information and the number of information words to be transferred (called the word count). The computer then enables the DMA unit which independently performs the transfers. The DMA unit then monitors the number of words transferred and when the specified number have been transferred, the DMA unit stops transferring data and notifies the computer system by a standard interrupt procedure. The computer then provides the DMA unit with the starting address of a new buffer area and the new word count and restart the unit. After the DMA unit has been enabled, the computer may usually perform other calculations.

When the buffer memory areas in the computer's memory become filled, the data is transferred by another DMA unit to a large secondary storage located on the computer's peripheral bus. In order to provide for continous transfer of information between the data acquisition device and the secondary storage a technique known as "double-buffering" is used. In this technique at least two separate buffer memory areas are used for transfer of data. Since the buffer areas are separate, data can be transferred from a data acquisition device to a first buffer area under control of one DMA unit while data is simultaneously being transferred from the second buffer area to the secondary storage unit under control of the other DMA unit. Since data transfer from a buffer memory to the secondary storage is generally faster than data transfer from the data acquisition device, the second buffer generally becomes empty before the first buffer is filled so that when the first buffer does become filled, new incoming information can be transferred to the empty second buffer while the first buffer is being emptied.

However, in a control system in which data is being sampled at a rapid, steady rate, it is possible to "lose" data samples if the time between data samples is less than the time required to restart a DMA transfer operation. Data loss occurs because the DMA process stops after an interrupt has been generated and a typical data acquisition unit contains very limited storage capabilities, therefore, any data which is sampled before the DMA process is restarted is not transferred to main memory. The time to restart the DMA proces is generally the sum of the maximum time the computer requires to recognize and service an interrupt and the time required to execute the routine which loads the DMA unit with the address and word count information and enables the transfer operation.

A corresponding problem occurs when data is being transferred from the buffer storage area to a signal generation device where the translated data is being used to control an ongoing process. If the transfer rate exceeds the time required to restart the DMA process when one buffer memory has been emptied, an interruption in data flow (generally called a data "underrun" or "delay") will occur. In some systems a small data delay is not serious, but in other systems it can produce catastophic results.

In order to eliminate data losses and delays, several prior art schemes have been developed. One conventional arrangement is to provide a "dual-port" memory in the data acquisition or translation device. With a dual-port memory, data can be stored and retrieved simultaneously via the two separate ports. Thus data can be transferred from the buffer area to the memory through one port and simultaneously removed from the memory from another port before the memory has become filled.

A similar scheme uses a first in, first out (FIFO) buffer memory located in the data acquisition or translation units. In this arrangement, data can also be stored and withdrawn simultaneously from the FIFO memory.

Other prior art systems have used two independent DMA controllers to control tranfor the final duration t_(S). The co-operating `0` and `1` data pulses 92 and 93 are identical with those of FIG. 3, being balanced bipolar pulses ranging from +V_(D) to -V_(D), and of total duration 2t_(S). The leading edges of the strobe pulses are synchronized with those of the data pulses so that a data pulse that is synchronized with the first third of a strobe pulse applied to electrode strip `p` is also synchronized with the middle third of the strobe pulse applied to electrode strip (p-1), and with the final third of the strobe pulse applied to electrode strip (p-2). From a study of these waveforms it is seen that the first third of a strobe pulse 91a will set a pixel into ` 0` state whether it is synchronized with a `0` data pulses or a `1` data pulse: that in the second third the voltages are insufficient for switching; and that in the final third is synchronized wiht a data `0` pulse waveform, but will be restored to the `1` state if it is synchronized with a data `1` waveform.

A line is then blanked for two line address times before being written instead of for only one line address time provided by the waveforms of FIG. 7. However, whereas with the waveforms of FIG. 7 data entry that induces switching of a pixel in a period t_(S) can be preceded by exposure of that pixel in the immediately preceding period of duration t_(S) by an opposite polarity stimulus of magnitude |V_(S) +V_(D) |, with the waveforms of FIG. 9 the maximum reverse polarity stimulus that can occur in this period t_(S) immediately preceding the data entry switching is a reverse polarity stimulus of magnitude |V_(D) |.

Although the present invention has thus been described with particular reference to one or more presently preferred embodiments, doubtless other embodiments will be apparent to the skilled artisan without departing from the spirit and intent of the present invention. Accordingly, the invention should be deemed to encompass all possible embodiments falling within the scope of the appended claims, as well as any equivilent thereof. 

We claim:
 1. A method of addressing a matrix-array type liquid crystal cell having a ferroelectric liquid crystal layer whose pixels are defined by the areas of overlap between the members of a first set of electrodes on one side of the liquid crystal layer and the members of a second set on the other side of the layer, in which method:(a) the pixels are addressed on a line-by-line basis after erasure, (b) unipolar blanking pulses are applied to the members of the first set of electrodes whereby erasure is effected. (c) unipolar strobing pulses are applied serially to the member of the first set of electrodes while charge balanced bipolar data pulses are applied in parallel to the members of the second set, the positive going parts being synchronized with the strobe pulse for one data significance and the negative going parts being synchronized with the strobe pulse for the other data significance, whereby the pixels may be selectivly addressed, and (d) the polarities of the strobe and blanking pulses are periodically reversed, whereby charge balance for the individual members of the first set of electrodes may be provided.
 2. A method as claimed in claim 1, wherein said polarities of said strobe and blanking pulses are periodically reversed on a regular basis.
 3. A method as claimed in claim 1, wherein the polarities of said strobe and blanking pulses are periodically reversed on a random basis.
 4. A method as claimed in claim 1 wherein a gap separates the positive and negative going portions of each balanced bipolar data pulse.
 5. A method as claimed in claim 1 wherein a gap always precedes or follows each data pulse.
 6. A method as claimed in claim 1 wherein the positive and negative going portions of each balanced bipolar data pulse are asymmetric, one part having m times the amplitude of the other and 1/m^(th) the duration, m being a constant other than
 1. 7. A method as claimed in claim 1 wherein the blanking pulses and strobing pulses are combined so that, while the strobing part of one of the thus combined blanking and strobing pulses is being used for data entry on one line, the same data co-operates with the blanking part of the succeeding, and partially overlapping in time, combined blanking and strobing pulse to effect blanking of a succeeding line.
 8. A method as claimed in claim 7, wherein said succeeding line is the next succeeding line. 